home *** CD-ROM | disk | FTP | other *** search
- Oldenburg, den 23.9.87
-
- Verehrte(r) 68000-Enthusiast(in),
-
- TEMPLEMON ist ein Maschinensprachemonitor und Debugger.
-
- Die Versionen 1.xx sind , aber nur im Ordner zusammen mit den anderen Dateien,
-
- FREI KOPIERBAR !
-
- Sie dürfen nicht gewerblich genutzt oder verkauft werden.
-
- Die Intention ist dabei, daß sich möglichst viele Atari ST-Anwender von diesem
- für viele Anwender wertvollen Werkzeug überzeugen können ! Bitte kopieren Sie
- also den Ordner mit diesen Dateien weiter !
-
- TEMPLEMON funktioniert sowohl mit dem Monochrom- als auch mit einem
- Farbmonitor.
-
- Der Monitor braucht nur einmal gestartet werden (z.B. einfach in den AUTO-
- Ordner der Boot-Diskette kopieren), dann hat er sich im System installiert.
- Tritt nun ein Fehler auf, der sonst nur so ein paar gar nicht so lustige
- Bömbchen auf den Bildschirm zaubert, können Sie sich nunmehr freuen, dafür
- ausführlich vom Monitor unterrichtet zu werden. Und wenn Sie mal kurz in den
- Monitor wollen, um im Speicher herumzuwühlen, brauchen Sie nur SHIFT/ALT/HELP
- zu drücken.
-
- Mit dem Befehl "VI" können Exceptionvektoren, die von anderen Monitorprogrammen
- evtl. zerstört wurden, wieder eingerichtet werden.
-
- Wenn Sie nun schon vollkommen von diesem Programm begeistert sind, dürfen Sie
- den nächsten Absatz überpringen.
-
- Um sich die Fähigkeiten des Monitors/Debuggers einmal demonstrieren zu lassen,
- stellen Sie sich folgendes vor:
- Ein Programm von Ihnen ist noch nicht fehlerfrei. Sie wissen, daß unter unbe-
- kannten Umständen igendwelche genau überprüfbaren Dinge passieren, z.B, daß
- eine bestimmte Variable manchmal einen völlig sinnlosen Wert erhält. Nun könn-
- ten Sie sich natürlich an die Arbeit machen, an allen möglichen Stellen Ihres
- Programms Abfragen extra dafür einzubauen, um so ungefähr die Stelle zu fin-
- den, wo der Fehler erzeugt wird. Doch Tarraaa !! Hier tritt der TEMPLEMON auf
- den Plan: Mit Hilfe eines kleinen Hilsprogramms, das schon bis auf die eigent-
- liche Abfrage der Fehlersituation vorprogrammiert ist (siehe Datei TRACE.C),
- können Sie den Debugger anweisen, nach jeder ausgeführten Assembler-Instruk-
- tion das kleine Hilfsprogramm aufzurufen, das Sie dann natürlich so program-
- miert haben, daß es immer direkt die Fehlerauswirkung überprüft und bei Er-
- kennen des Fehlers diesen sofort vom Monitor anzeigen läßt.
- Als Beispiel können Sie das Programm TRACE.TOS starten, sofern der Monitor
- vorher schon einmal gestartet wurde. Es paßt darauf auf, daß oben links auf
- dem Bildschirm nichts Schwarzes auftaucht. Wenn Sie den Anweisungen des Pro-
- gramms TRACE.TOS folgen und mit dem Maus-Cursor dann nach oben links gehen,
- wird Sie das Programm sofort dabei erwischen.
-
- Wenn Sie das dann von der Nützlichkeit dieses Monitors überzeugt, bitte ich
- Sie, mir dafür einem Betrag von zwanzig D-Mark zu schicken. Damit zeigen Sie
- mir, daß mein Programm wieder einen zufriedenen Anwender gefunden hat und
- ich sende Ihnen dafür eine noch umfangreichere Anleitung für den Monitor
- mit nützlichen, praxisbezogenen Tips für die Fehlersuche, mit genauen
- Beschreibungen, wie die genauen Abläufe der Funktionen, wie z.B. der Trace-
- Funktion, aussehen und wie sich der Monitor im System einbettet (Benutzung
- von Vektoren, Verhalten bei Interrupts, usw.).
-
- Um eventuellen Fragen vorzubeugen, lassen Sie sich gleich sagen, daß dieser
- Monitor nicht mit Symbolen (wie z.B. der SID) arbeiten kann ! Auch ist es
- nicht möglich, Programme zu laden, um sie dann zu starten. Dies ist konzep-
- tionsbedingt bei TEMPLEMON nur schwer lösbar. Stattdessen sollten Sie TEMPLEMON
- als ständigen Hintergrundmonitor verwenden, der für Sie in jeder Situation auf
- Fehler aufpaßt. Er kann also nicht einen vollwertigen Debugger ersetzen, dafür
- aber sinnvoll ergänzen !
-
-
- Funktionsübersicht TEMPLEMON /Version 1.12/ 6.2.88
- --------------------------------------------------
- Copyright (C) 1986, Thomas Tempelmann
- Thomas Tempelmann, Nordendstr. 64, 8000 München 40, West Germany
- ------------------------------------------------------------------------------
- Die Versionen 1.x dieses Monitors sind frei kopierbar. Allerdings nur in der
- Originalversion, das schließt ein, daß dieser Text incl. der Urheberrechts-
- angabe nicht gelöscht werden darf und daß immer der ganze Ordner, in dem
- sich dieser Monitor befindet, kopiert wird (mit den Dateien READ.ME, TRACE.C,
- TRACE.TOS und TEMPLMON.PRG) ! Bitte haben Sie Verständnis dafür, denn nur auf
- diese Weise kann dieses Konzept der "public domain"-Programme hier in Europa
- die gleiche Selbstverständlichkeit erlangen, wie es das in Nordamerika schon
- seit mehreren Jahren hat.
- Vielen Dank für Ihre Rücksicht und : GOOD HUNTING !
-
- "!" zeigt Eingabebereitschaft des Monitors an.
- Alle Werte sind hexadezimal angegeben/anzugeben !
- Dezimale Werte können mit vorangestelltem "&" eingegeben werden.
- <f> steht für die Anfangsadresse, <e> für die erste ausgeschlossene Adr. !
- Anstatt <e> kann auch X<n> ( Anzahl in Bytes ) angegeben werden, in manchen
- Fällen kann auch Z<n> ( Anzahl der anzuzeigenden Zeilen ) verwandt werden.
- Bei den Funktionen "M", "D" und "I" kann statt der Endadr. auch ein Punkt
- eingeben werden, um eine unendliche Auflistung zu erreichen.
- Als Adresse kann auch ein Registerinhalt ( mit "R<registername>") eingegeben
- werden. Beispiel: "D R PC." disassembliert ab aktueller PC-Adr.
-
- Alle Auflistungen können mit der /SPACE/-Taste angehalten oder mit einer
- anderen Taste abgebrochen werden.
- Einer Adresse kann die Offset-Variable O vorangestellt werden (s.u.).
- Die Tasten /F1/ und /F2/ schalten die Anzeige (!) des Monitor- bzw. des Origi-
- nal-Bildschirms um. Zur Beachtung: Verlassen wird TEMPLEMON mit 'G' oder 'Q' !
-
- M <f> <e> Memory dump. Zeigt Speicher byteweise an.
- : <f> <w1> <w2>... Speichert Bytes <w..> ab Adresse <f>.
- D <f> <e> Disassembliert Speicherbereich.
- O <offs> Setzt die Variable "O" auf den Wert <offs>.
- C <f> <e> <d> Kopiert Bytes von <f>..<e>-1 nach <d>..<d>+(<e>-<f>)
- V <f> <e> <d> Verify. Vergleicht Bytes und zeigt Unterschiede an.
- H <f> <e> <b1> <b2>... Hunt. Sucht nach Bytes (? als Joker).
- H <f> <e> '<string> Sucht nach Zeichenkette (? als Joker).
- F <f> <e> <b1> <b2>... Füllt Speicher mit Bytes (? als Joker).
- F <f> <e> '<string> Füllt Speicher mit Zeichenkette (? als Joker).
- I <f> <e> ASCII dump.
- ' <f> <string> Speichert ASCII-Zeichenkette in den Speicher.
- B Zeigt alle Breakpoints (BP) an (Adresse,Zähler,Stand)
- B<n> <a> <c> <c0> Setzt BP Nr. <n> auf Adresse <a>.
- B- Löscht alle BPs.
- Breakpoints werden beim Verlassen des Monitors gesetzt, sofern das Tracebit
- im SR nicht gesetzt ist (sonst kann die Traceroutine die BPs testen).
-
- G <f> Go. Verläßt Monitor und fährt auf Adr. <f> fort.
- GS <f> Ruft Unterprogramm auf, das mit RTS abschliessen
- muß, um wieder in den Monitor zurückzugelangen.
- T+ ( T- ) Tracekontrollmodus einschalten ( bzw. ausschalten ).
- Wenn der Tracemodus eingeschaltet ist und "G" ausgeführt wurde, lösen
- folgende Tasten eine Funktion aus :
- /SPACE/ führt die angezeigte Instruktion aus.
- /ESC/ verläßt Tracekontrollprogramm, um normale Monitorfunktionen
- auszuführen. Rückkehr mit "G".
- /O/ schaltet Anzeige und Tastenabfrage ab und führt Programm weiter
- aus. Dabei muß dafür gesorgt werden, daß das Programm wieder
- in die Monitoreingabe zurückkehrt, z.B. über einen BP !
- /A/ wie /O/, jedoch werden alle Instruktionen getraced, also auch
- Trap-Routinen usw., da das Trace-Bit im SR immer wieder gesetzt
- wird. Nur, wenn ein Diskzugriff stattfindet, oder vom Programm
- die Interruptmaske auf 7 gesetzt wurde, wird das Tracebit nicht
- vor Ausführung der nächsten Instruktion gesetzt.
- /R/ schaltet Ein-/Ausgabe bis zur Rückkehr aus dem augenblicklichen
- Unterprogramm ab. Ist das T-Flag Null, wird einfach eine Rück-
- sprungadresse in den Monitor auf den Stack geladen. Natürlich
- muß dann A7 so stehen, daß beim RTS die Adresse auch vom Stack
- geholt wird. Ist das T-Flag gesetzt, merkt sich der Monitor das
- A7-Register und wartet auf ein RTS, RTE oder RTR, sofern A7 nicht
- kleiner als das gemerkte A7 ist, und schaltet dann die Anzeige
- wieder ein.
- ... jede Menge neue Funktionen seit Version 1.4 !
-
- Für die folgenden Register-Operationen können die Register <reg> mit den
- üblichen Abkürzungen (D0,A7,SR,PC,SSP,USP,usw.) angegeben werden.
- Außerdem steht F für SR, jedoch werden dann die Flags einzeln angezeigt.
- A7 repräsentiert, abhängig vom augenblicklichen Stand des S-Bits im SR,
- den jeweiligen Stackpointer (SSP bzw. USP).
- R Zeigt die mit "R:" ausgewählten Register an.
- R <reg> = <l> Setzt Wert <l> in Register.
- R: <reg1> <reg2>... Wählt Register-Default-Anzeige aus (z.B. f. Trace).
- R F<SR-Flag> = <v> Setzt SR-Flag auf <v> (z.B. "R FC=1" setzt Carry-Flag)
-
- P löscht Bildschirm.
- Q Quit ( GEMDOS(0) ). Achtung: Wenn vom Desktop in den
- Monitor gelangt wurde, niemals "Q" auslösen, sondern
- nur "G" eingeben ! "Q" dient zum Abbrechen des gerade
- aktiv gewesenen Programms, "G" führt es weiter aus !
-
- Erweiterungen seit V1.3:
- S <dateiname>, <f> <e> Speichert Bereich v. <f> bis <e>-1 in eine Datei.
- P <dateiname> Öffnet Protokolldatei. Alle Ausgaben gehen dann sowohl
- auf den Bildschirm als auch auf die Datei. Beispiel:
- "P PRN:" protokolliert alle Ausgaben auf dem Drucker.
- PC Schließt Protokolldatei.
-
- Erweiterungen und Fehlerkorrekturen seit V1.4:
- Wird nicht verraten. Dazu müssen Sie sich schon die Anleitung bei mir holen.
- Nur soviel: Vor Allem der Tracemodus ist noch um einige wertvolle Funktionen
- erweitert worden.
-
- Neuheiten in V1.5:'
- L <dateiname> Lädt Datei, Speicher wird automatisch mit 'Malloc' an-
- gelegt, sofern kein Fehler auftrat. Achtung: Eignet sich
- nicht zum Laden von Programmen, da nicht reloziert wird!
- Es empfiehlt sich, immer Zettel und Stift bereit zu hal-
- ten, um sich die Anfangs-/Endadressen zu notieren.
- L- <f> Gibt Speicher, der beim Laden angefordert wurde, wieder
- frei. <f> muß dabei die Adresse sein, die beim Laden
- als Anfangsadresse ausgegeben wurde.
- L <dateiname>, <f> Lädt Datei an die Adresse <f>.
-
- Es ist nun bei Adreßangaben möglich, Ausdrücke mit "+" und "-" zu verwenden,
- so ist z.B. nach einem Monitoreinsprung der Bereich vor der Unfalladresse mit
- "D RPC-20." leicht zu disassemblieren.
-
- Direkt nach dem Dateinamen bei Load kann mit einem vorgestellten "@" die Posi-
- tion in der Datei bestimmt werden, ab der gelesen werden soll. Beispiel:
- "L TERMINA.TOR, @100, 50000x20" lädt aus der Datei "TERMINA.TOR" ab dem 256.
- Byte 32 Bytes an die Adresse ab $50000. Auf die gleiche Weise kann ein bes-
- timmter Bereich einer Datei überschrieben werden. Z.B. überschreibt "S A:
- B.TXT,@&12,0.2" die Daten der Datei B.TXT in den 12. und 13. Bytes mit den
- Werten aus den Adressen 0 und 1.
-
- Die Protokollausgaberoutinen sind verbessert worden.
-
- In Version 1.6 wurden 2 Fehler behoben:
- - Breakpoints, die im ROM-Bereich gesetzt wurden, konnten bisher oft nicht er-
- kannt werden. Die Wahrscheinlichkeit, daß dies immer noch passiert, ist nun
- verringert worden.
- - Bei der Funktion mit dem Hochkomma (') können nun wieder Kleinbuchstaben ein-
- gegeben werden.
-
- V 1.7:
- - Bei Protokollausgaben werden nun wirklich keine Ctrl-Zeichen mehr ausgegeben.
- - "VI" reinitialisiert auch Bus-/Address-Error Vektoren.
- - "GS" und "R" funktionieren wieder bei FT=0 richtig.
-
- V 1.8:
- - Farbdarstellung fehlerfrei in Mid-Res.
-
- V 1.9:
- - Tasteneingabe auch bei IR-Level=7 möglich.
-
- V 1.11:
- - Hardcopies sind mit SHIFT/ALT/HELP erzeugbar.
-
- V 1.12:
- - Kein Speicherplatzverlust mehr bei mehrmaligem Start v. TEMPLMON.PRG.
- - Von den TRAPs wird nur TRAP #6 (f. Megamax Modula-2) abgefangen.
-
- Eine ausführlichere Anleitung mit hilfreichen Tips zur Fehlersuche erhalten
- Sie ab jetzt für nur noch DM 20.- ! Ausserdem können Sie mir dadurch gleich
- Ihre Anerkennung zu meinem Programm bekunden. Wenn Sie noch eine einseitig
- formatierte Disk beilegen (achten Sie auf das richtige Porto, bei Briefen
- meist 1.30 DM !), können Sie Glück haben, daß ich Ihnen gleich noch eine neue
- Monitorversion draufkopiere.
-
- Mit freundlichen Grüßen Thomas Tempelmann